// 游戏开始前的ws请求
import {
  house_data,
  add_member,
  update_member_time
} from '~/database/socketData.js'
import { wsSend, house_every_send_conn } from '~/websocket/utils.js'
import {
  $ready_members,
  $house_err
} from '~/websocket/types.js'
//const house_data = {}
// house_id:{
// status:0,0准备1开始,2计分中，3已结束
// problem:'泪流成河'
// problem_id:1, 做题id
// problem_tip:'山水类的'，
// updatedAt:'',
// members:{
//   openid:{
//   conn:conn,
//   name: String,
//   avatarUrl:String,
//   gender:Number,
//   m_status:Number,// 0准备1猜题，2作画
//   wait_add_score:2,
//   score:Number,

//  },
// }
// 

export const join_house = async (conn, str) => {
  const { openid,name, avatarUrl, gender } = str;
  // 转成小写
  let  house_id = str.house_id.toLowerCase()
  if (house_id && openid && name && avatarUrl && gender) {
    if (!house_data[house_id]) {
      wsSend(conn, {
        type: $house_err,
        data: '未找到该房间'
      })
      return;
    } else if (house_data[house_id].members[openid]) {
      // 如果新加入成员原本就在房中，
      // 0准备1开始,2计分中，3已结束，4休息整理中
      if (house_data[house_id].status !== 0 && house_data[house_id].status !== 3) {
        wsSend(conn, {
          type: 'game_begin',
          data: '游戏已开始直接进入'
        })
      }
    } else if (house_data[house_id].status !== 0) {
      wsSend(conn, {
        type: $house_err,
        data: '游戏已开始不能加入'
      })
      return;
    }

    // 将数据加入房间
    add_member({ house_id, openid, conn, name, avatarUrl, gender })
    const sendData = house_data[house_id];
    house_every_send_conn(house_id, {
      type: $ready_members,
      data: sendData
    })
  } else {
    wsSend(conn, {
      type: $house_err,
      data: '参数不齐'
    })
    return;
  }
}
// 更新用户心跳和时间
export const polling_house = (conn, str) => {
  const { openid, house_id } = str;
  if (!house_data[house_id]) {
    wsSend(conn, {
      type: $house_err,
      data: '该房间已过期'
    });
    return;
  }
  if (!house_data[house_id].members[openid]) {
    wsSend(conn, {
      type: $house_err,
      data: '你没有加入该房间'
    });
    return;
  }
  update_member_time(str)
} 
